Skip to content

Latest commit

 

History

History
200 lines (148 loc) · 9.75 KB

05-Arquitetura da Solução.md

File metadata and controls

200 lines (148 loc) · 9.75 KB

Arquitetura da Solução

Pré-requisitos: Projeto de Interface

Definição de como o software é estruturado em termos dos componentes que fazem parte da solução e do ambiente de hospedagem da aplicação.

Arquitetura da Solução

Diagrama de Classes

O diagrama de classes ilustra graficamente como será a estrutura do software, e como cada uma das classes da sua estrutura estarão interligadas. Essas classes servem de modelo para materializar os objetos que executarão na memória.

As referências abaixo irão auxiliá-lo na geração do artefato “Diagrama de Classes”.

Documentação do Banco de Dados MongoDB

Este documento descreve a estrutura e o esquema do banco de dados não relacional utilizado por nosso projeto, baseado em MongoDB. O MongoDB é um banco de dados NoSQL que armazena dados em documentos JSON (ou BSON, internamente), permitindo uma estrutura flexível e escalável para armazenar e consultar dados.

Esquema do Banco de Dados

Coleção: users

Armazena as informações dos usuários do sistema.

Estrutura do Documento

{
    "_id": "ObjectId('5f7e1bbf9b2a4f1a9c38b9a1')",
    "name": "John Doe",
    "email": "[email protected]",
    "passwordHash": "hash_da_senha",
    "roles": ["admin", "user"],
    "createdAt": "2024-08-29T10:00:00Z",
    "updatedAt": "2024-08-29T12:00:00Z"
}

Descrição dos Campos

  • _id: Identificador único do usuário gerado automaticamente pelo MongoDB.
  • name: Nome completo do usuário.
  • email: Endereço de email do usuário.
  • passwordHash: Hash da senha do usuário.
  • roles: Lista de papéis atribuídos ao usuário (por exemplo, admin, user).
  • createdAt: Data e hora de criação do usuário.
  • updatedAt: Data e hora da última atualização dos dados do usuário.

Coleção: products

Armazena as informações dos produtos disponíveis no sistema.

{
    "_id": "ObjectId('5f7e1ccf9b2a4f1a9c38b9a2')",
    "name": "Produto Exemplo",
    "description": "Descrição detalhada do produto.",
    "price": 99.99,
    "category": "Categoria Exemplo",
    "stock": 100,
    "createdAt": "2024-08-29T10:30:00Z",
    "updatedAt": "2024-08-29T11:30:00Z"
}

Descrição dos Campos

  • _id: Identificador único do usuário gerado automaticamente pelo MongoDB.
  • name: Nome completo do usuário.
  • email: Endereço de email do usuário.
  • passwordHash: Hash da senha do usuário.
  • roles: Lista de papéis atribuídos ao usuário (por exemplo, admin, user).
  • createdAt: Data e hora de criação do usuário.
  • updatedAt: Data e hora da última atualização dos dados do usuário.

Coleção: products

Armazena as informações dos produtos disponíveis no sistema.

Estrutura do Documento

{
    "_id": "ObjectId('5f7e1ccf9b2a4f1a9c38b9a2')",
    "name": "Produto Exemplo",
    "description": "Descrição detalhada do produto.",
    "price": 99.99,
    "category": "Categoria Exemplo",
    "stock": 100,
    "createdAt": "2024-08-29T10:30:00Z",
    "updatedAt": "2024-08-29T11:30:00Z"
}

Descrição dos Campos

  • _id: Identificador único do produto gerado automaticamente pelo MongoDB.
  • name: Nome do produto.
  • description: Descrição detalhada do produto.
  • price: Preço do produto.
  • category: Categoria à qual o produto pertence.
  • stock: Quantidade de produtos em estoque.
  • createdAt: Data e hora de criação do produto.
  • updatedAt: Data e hora da última atualização dos dados do produto.

Coleção: orders

Armazena as informações dos pedidos feitos pelos usuários.

Estrutura do Documento

{
    "_id": "ObjectId('5f7e1ddf9b2a4f1a9c38b9a3')",
    "userId": "ObjectId('5f7e1bbf9b2a4f1a9c38b9a1')",
    "products": [
        {
            "productId": "ObjectId('5f7e1ccf9b2a4f1a9c38b9a2')",
            "quantity": 2,
            "price": 99.99
        }
    ],
    "totalPrice": 199.98,
    "status": "pending",
    "createdAt": "2024-08-29T11:00:00Z",
    "updatedAt": "2024-08-29T11:30:00Z"
}

Descrição dos Campos

  • _id: Identificador único do pedido gerado automaticamente pelo MongoDB.
  • userId: Referência ao identificador do usuário que fez o pedido.
  • products: Lista de produtos incluídos no pedido, cada um com:
  • productId: Identificador do produto.
  • quantity: Quantidade do produto pedido.
  • price: Preço unitário do produto no momento do pedido.
  • totalPrice: Preço total do pedido (soma de todos os itens).
  • status: Status atual do pedido (por exemplo, pending, shipped, delivered).
  • createdAt: Data e hora de criação do pedido.
  • updatedAt: Data e hora da última atualização dos dados do pedido.

Boas Práticas

Validação de Dados: Implementar validação de esquema e restrições na aplicação para garantir a consistência dos dados.

Monitoramento e Logs: Utilize ferramentas de monitoramento e logging para acompanhar a saúde do banco de dados e diagnosticar problemas.

Escalabilidade: Considere estratégias de sharding e replicação para lidar com crescimento do banco de dados e alta disponibilidade.

Material de Apoio da Etapa

Na etapa 2, em máterial de apoio, estão disponíveis vídeos com a configuração do mongo.db e a utilização com Bson no C#

Modelo ER (Somente se tiver mais de um banco e outro for relacional)

O Modelo ER representa através de um diagrama como as entidades (coisas, objetos) se relacionam entre si na aplicação interativa.

As referências abaixo irão auxiliá-lo na geração do artefato “Modelo ER”.

Esquema Relacional (Somente se tiver mais de um banco e outro for relacional)

O Esquema Relacional corresponde à representação dos dados em tabelas juntamente com as restrições de integridade e chave primária.

As referências abaixo irão auxiliá-lo na geração do artefato “Esquema Relacional”.

Modelo Físico (Somente se tiver mais de um banco e outro for relacional)

Entregar um arquivo banco.sql contendo os scripts de criação das tabelas do banco de dados. Este arquivo deverá ser incluído dentro da pasta src\bd.

Tecnologias Utilizadas

Descreva aqui qual(is) tecnologias você vai usar para resolver o seu problema, ou seja, implementar a sua solução. Liste todas as tecnologias envolvidas, linguagens a serem utilizadas, serviços web, frameworks, bibliotecas, IDEs de desenvolvimento, e ferramentas.

Apresente também uma figura explicando como as tecnologias estão relacionadas ou como uma interação do usuário com o sistema vai ser conduzida, por onde ela passa até retornar uma resposta ao usuário.

Hospedagem

Explique como a hospedagem e o lançamento da plataforma foi feita.

Links Úteis:

Qualidade de Software

Conceituar qualidade de fato é uma tarefa complexa, mas ela pode ser vista como um método gerencial que através de procedimentos disseminados por toda a organização, busca garantir um produto final que satisfaça às expectativas dos stakeholders.

No contexto de desenvolvimento de software, qualidade pode ser entendida como um conjunto de características a serem satisfeitas, de modo que o produto de software atenda às necessidades de seus usuários. Entretanto, tal nível de satisfação nem sempre é alcançado de forma espontânea, devendo ser continuamente construído. Assim, a qualidade do produto depende fortemente do seu respectivo processo de desenvolvimento.

A norma internacional ISO/IEC 25010, que é uma atualização da ISO/IEC 9126, define oito características e 30 subcaracterísticas de qualidade para produtos de software. Com base nessas características e nas respectivas sub-características, identifique as sub-características que sua equipe utilizará como base para nortear o desenvolvimento do projeto de software considerando-se alguns aspectos simples de qualidade. Justifique as subcaracterísticas escolhidas pelo time e elenque as métricas que permitirão a equipe avaliar os objetos de interesse.

Links Úteis: